#ifndef _BSP_MAGNETIC_H
#define _BSP_MAGNETIC_H
#include "driver/ledc.h"
#include "driver/gpio.h"

#define GPIO_A_1_PORT        GPIO_NUM_19
#define GPIO_A_2_PORT        GPIO_NUM_18
#define GPIO_OUTPUT_PIN_SEL      (1ULL<<GPIO_A_1_PORT | 1ULL<<GPIO_A_2_PORT)


#define GPIO_A_QD_PORT              GPIO_NUM_7
#define GPIO_OUTPUT_EN_PIN_SEL      (1ULL<<GPIO_A_QD_PORT)


#define A_PWM_FREQUENCY         (20000)
#define A_PWM_CHANNEL           LEDC_CHANNEL_0
#define A_PWM_PORT              (GPIO_NUM_10) // Define the output GPIO

#define A_PWM_DUTY_CLOSE 1
#define A_PWM_DUTY_FULL  256

#define A_PWM_CLOSE {gpio_set_level(GPIO_A_1_PORT, 0);gpio_set_level(GPIO_A_2_PORT, 0);}
#define A_PWM_AC_START {gpio_set_level(GPIO_A_1_PORT, 1);gpio_set_level(GPIO_A_2_PORT, 0);}


#define A_PWM_AC_L {gpio_set_level(GPIO_A_QD_PORT, 0);}
#define A_PWM_AC_H {gpio_set_level(GPIO_A_QD_PORT, 1);}

#define A_PWM_DC_OPEN_H {gpio_set_level(GPIO_A_QD_PORT, 1);gpio_set_level(GPIO_A_1_PORT, 1);gpio_set_level(GPIO_A_2_PORT, 0);}
#define A_PWM_DC_OPEN_L {gpio_set_level(GPIO_A_QD_PORT, 0);gpio_set_level(GPIO_A_1_PORT, 1);gpio_set_level(GPIO_A_2_PORT, 0);}




void magnetic_init(void);
void magnetic_output(uint8_t mode,uint8_t power_value);
void magnetic_pause_or_stop(uint8_t status);
void magnetic_pin_toggle(uint8_t mode, uint8_t temp_protect);
#endif
